package com.learning.thread.optimize;

/**
 * ClassName: ReduceLockTime
 * Description: 减少锁持有时间
 * Date: 2018/7/17 10:42 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
public class ReduceLockTime {

    /**
     * 假设一下方法中只有 secondMethod(); 是需要同步的，而
     * oneMethod 与 threadMethod 方法不需要做同步控制且比较耗资源
     */
    public synchronized void syncMethod() {
        oneMethod();
        secondMethod();
        threadMethod();
    }

    /**
     * 明显减少了线程持有锁的时间，提高了系统的吞吐量
     */
    public void optimizeSyncMethod() {
        oneMethod();
        synchronized (this) {
            secondMethod();
        }
        threadMethod();
    }

    private void threadMethod() {
    }

    private void secondMethod() {
    }

    private void oneMethod() {
    }
}
